﻿<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
    targetNamespace="http://metalx.org/Structure"
    elementFormDefault="qualified"
    xmlns="http://metalx.org/Structure"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
	<xsd:element name="structure">
		<xsd:complexType>
			<xsd:choice maxOccurs="unbounded">
				<xsd:element name="string">
					<xsd:complexType>
						<xsd:simpleContent>
							<xsd:extension base="xsd:string">
								<xsd:attribute name="name" use="required"/>
								<xsd:attribute name="offset" use="required" type="xsd:hexBinary"/>
								<xsd:attribute name="length" type="xsd:unsignedInt"/>
							</xsd:extension>
						</xsd:simpleContent>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="address32">
					<xsd:complexType>
						<xsd:simpleContent>
							<xsd:extension base="xsd:hexBinary">
								<xsd:attribute name="name" use="required"/>
								<xsd:attribute name="offset" use="required" type="xsd:hexBinary"/>
							</xsd:extension>
						</xsd:simpleContent>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="address64">
					<xsd:complexType>
						<xsd:simpleContent>
							<xsd:extension base="xsd:hexBinary">
								<xsd:attribute name="name" use="required"/>
								<xsd:attribute name="offset" use="required" type="xsd:hexBinary"/>
							</xsd:extension>
						</xsd:simpleContent>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="byte">
					<xsd:complexType>
						<xsd:simpleContent>
							<xsd:extension base="xsd:byte">
								<xsd:attribute name="name" use="required"/>
								<xsd:attribute name="offset" use="required" type="xsd:hexBinary"/>
							</xsd:extension>
						</xsd:simpleContent>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="byteHex">
					<xsd:complexType>
						<xsd:simpleContent>
							<xsd:extension base="xsd:hexBinary">
								<xsd:attribute name="name" use="required"/>
								<xsd:attribute name="offset" use="required" type="xsd:hexBinary"/>
							</xsd:extension>
						</xsd:simpleContent>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="short">
					<xsd:complexType>
						<xsd:simpleContent>
							<xsd:extension base="xsd:short">
								<xsd:attribute name="name" use="required"/>
								<xsd:attribute name="offset" use="required" type="xsd:hexBinary"/>
							</xsd:extension>
						</xsd:simpleContent>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="shortHex">
					<xsd:complexType>
						<xsd:simpleContent>
							<xsd:extension base="xsd:hexBinary">
								<xsd:attribute name="name" use="required"/>
								<xsd:attribute name="offset" use="required" type="xsd:hexBinary"/>
							</xsd:extension>
						</xsd:simpleContent>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="int">
					<xsd:complexType>
						<xsd:simpleContent>
							<xsd:extension base="xsd:integer">
								<xsd:attribute name="name" use="required"/>
								<xsd:attribute name="offset" use="required" type="xsd:hexBinary"/>
							</xsd:extension>
						</xsd:simpleContent>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="intHex">
					<xsd:complexType>
						<xsd:simpleContent>
							<xsd:extension base="xsd:hexBinary">
								<xsd:attribute name="name" use="required"/>
								<xsd:attribute name="offset" use="required" type="xsd:hexBinary"/>
							</xsd:extension>
						</xsd:simpleContent>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="long">
					<xsd:complexType>
						<xsd:simpleContent>
							<xsd:extension base="xsd:integer">
								<xsd:attribute name="name" use="required"/>
								<xsd:attribute name="offset" use="required" type="xsd:hexBinary"/>
							</xsd:extension>
						</xsd:simpleContent>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="longHex">
					<xsd:complexType>
						<xsd:simpleContent>
							<xsd:extension base="xsd:hexBinary">
								<xsd:attribute name="name" use="required"/>
								<xsd:attribute name="offset" use="required" type="xsd:hexBinary"/>
							</xsd:extension>
						</xsd:simpleContent>
					</xsd:complexType>
				</xsd:element>
			</xsd:choice>
			<xsd:attribute name="length" type="xsd:unsignedInt" use="required"/>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>
